package com.example.springaop3.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2023-03-13
 * Time: 23:31
 */

// 系统配置文件, 首先需要实现 WebMvcConfigurer 接口(所有配置文件中的类都需要实现这个接口)
//    其次是 @Configuration 注解
@Configuration
public class AppConfig implements WebMvcConfigurer {
//    注入拦截器, 当然也可以直接 new
    @Autowired
    private LoginInterceptor loginInterceptor;


//    将拦截器添加到配置文件中
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
//        可以设置拦截哪些方法
//        也可以设置不拦截哪些方法
//        注意这里注册页面和登录页面当然不能拦截  (不然就造成了死锁)
        registry.addInterceptor(loginInterceptor).addPathPatterns("/**/index").
        excludePathPatterns("/**/login").
        excludePathPatterns("/**/*.html").// 排除所有的静态资源
        excludePathPatterns("/**/*.js").
        excludePathPatterns("/**/*.css").
        excludePathPatterns("/**/*.jpg").
        excludePathPatterns("/**/*.png");
    }

    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
//        给路径添加前缀
//        c 表示所有的 controller类, true, 表示添加前缀
        configurer.addPathPrefix("addPrefix", c->true);
    }
}
